package com.bandit.serialize;

import com.bandit.extension.SPI;

/**
 * 所有序列化器需要实现这个接口
 * @author Bandit
 * @create 2022/2/23 0:06
 */
@SPI
public interface Serializer {
    /**
     * 序列化
     * @param obj 序列化对象
     * @return
     */
    byte[] serialize(Object obj);

    /**
     * 反序列化
     * @param bytes 序列化过的数组
     * @param clazz 反序列化希望转为的类
     * @param <T>   类的类型
     * @return
     */
    <T> T deserialize(byte[] bytes, Class<T> clazz);
}
